{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 一. 简介\n",
    "\n",
    "Bagging的思路很简单，对大小为$n$的样本集进行$n$次重采样得到一个新的样本集，在新样本集上训练一个基学习器，该过程执行$m$，最后对这$m$个基学习器做组合即得到最后的强学习器：  \n",
    "![avatar](./source/10_bagging.png)\n",
    "### 二.代码实现：分类"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import os\n",
    "os.chdir('../')\n",
    "from ml_models import utils\n",
    "import copy\n",
    "import numpy as np\n",
    "from ml_models.tree import CARTClassifier\n",
    "\n",
    "\"\"\"\n",
    "bagging分类实现，封装到ml_models.ensemble\n",
    "\"\"\"\n",
    "\n",
    "class BaggingClassifier(object):\n",
    "    def __init__(self, base_estimator=None, n_estimators=10):\n",
    "        \"\"\"\n",
    "        :param base_estimator: 基学习器，允许异质；异质的情况下使用列表传入比如[estimator1,estimator2,...,estimator10],这时n_estimators会失效；\n",
    "                                同质的情况，单个estimator会被copy成n_estimators份\n",
    "        :param n_estimators: 基学习器迭代数量\n",
    "        \"\"\"\n",
    "        self.base_estimator = base_estimator\n",
    "        self.n_estimators = n_estimators\n",
    "        if self.base_estimator is None:\n",
    "            # 默认使用决策树\n",
    "            self.base_estimator = CARTClassifier()\n",
    "        # 同质分类器\n",
    "        if type(base_estimator) != list:\n",
    "            estimator = self.base_estimator\n",
    "            self.base_estimator = [copy.deepcopy(estimator) for _ in range(0, self.n_estimators)]\n",
    "        # 异质分类器\n",
    "        else:\n",
    "            self.n_estimators = len(self.base_estimator)\n",
    "\n",
    "    def fit(self, x, y):\n",
    "        # TODO:并行优化\n",
    "        n_sample = x.shape[0]\n",
    "        for estimator in self.base_estimator:\n",
    "            # 重采样训练集\n",
    "            indices = np.random.choice(n_sample, n_sample, replace=True)\n",
    "            x_bootstrap = x[indices]\n",
    "            y_bootstrap = y[indices]\n",
    "            estimator.fit(x_bootstrap, y_bootstrap)\n",
    "\n",
    "    def predict_proba(self, x):\n",
    "        # TODO:并行优化\n",
    "        probas = []\n",
    "        for estimator in self.base_estimator:\n",
    "            probas.append(estimator.predict_proba(x))\n",
    "\n",
    "        return np.mean(probas, axis=0)\n",
    "\n",
    "    def predict(self, x):\n",
    "        return np.argmax(self.predict_proba(x), axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "#造伪数据\n",
    "from sklearn.datasets import make_classification\n",
    "data, target = make_classification(n_samples=100, n_features=2, n_classes=2, n_informative=1, n_redundant=0,\n",
    "                                   n_repeated=0, n_clusters_per_class=1, class_sep=.5,random_state=21)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x23197e1ad30>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#同质\n",
    "classifier = BaggingClassifier()\n",
    "classifier.fit(data, target)\n",
    "utils.plot_decision_function(data, target, classifier)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x23195b36198>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#异质\n",
    "from ml_models.linear_model import LogisticRegression\n",
    "from ml_models.svm import SVC\n",
    "classifier = BaggingClassifier(base_estimator=[LogisticRegression(),SVC(kernel='rbf',C=5.0),CARTClassifier(max_depth=2)])\n",
    "classifier.fit(data, target)\n",
    "utils.plot_decision_function(data, target, classifier)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 三.代码实现：回归"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "from ml_models.tree import CARTRegressor\n",
    "\n",
    "\"\"\"\n",
    "bagging回归实现，封装到ml_models.ensemble\n",
    "\"\"\"\n",
    "\n",
    "class BaggingRegressor(object):\n",
    "    def __init__(self, base_estimator=None, n_estimators=10):\n",
    "        \"\"\"\n",
    "        :param base_estimator: 基学习器，允许异质；异质的情况下使用列表传入比如[estimator1,estimator2,...,estimator10],这时n_estimators会失效；\n",
    "                                同质的情况，单个estimator会被copy成n_estimators份\n",
    "        :param n_estimators: 基学习器迭代数量\n",
    "        \"\"\"\n",
    "        self.base_estimator = base_estimator\n",
    "        self.n_estimators = n_estimators\n",
    "        if self.base_estimator is None:\n",
    "            # 默认使用决策树\n",
    "            self.base_estimator = CARTRegressor()\n",
    "        # 同质\n",
    "        if type(base_estimator) != list:\n",
    "            estimator = self.base_estimator\n",
    "            self.base_estimator = [copy.deepcopy(estimator) for _ in range(0, self.n_estimators)]\n",
    "        # 异质\n",
    "        else:\n",
    "            self.n_estimators = len(self.base_estimator)\n",
    "\n",
    "    def fit(self, x, y):\n",
    "        # TODO:并行优化\n",
    "        n_sample = x.shape[0]\n",
    "        for estimator in self.base_estimator:\n",
    "            # 重采样训练集\n",
    "            indices = np.random.choice(n_sample, n_sample, replace=True)\n",
    "            x_bootstrap = x[indices]\n",
    "            y_bootstrap = y[indices]\n",
    "            estimator.fit(x_bootstrap, y_bootstrap)\n",
    "\n",
    "    def predict(self, x):\n",
    "        # TODO:并行优化\n",
    "        preds = []\n",
    "        for estimator in self.base_estimator:\n",
    "            preds.append(estimator.predict(x))\n",
    "\n",
    "        return np.mean(preds, axis=0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "#构造数据\n",
    "data = np.linspace(1, 10, num=100)\n",
    "target1 = 3*data[:50] + np.random.random(size=50)*3#添加噪声\n",
    "target2 = 3*data[50:] + np.random.random(size=50)*10#添加噪声\n",
    "target=np.concatenate([target1,target2])\n",
    "data = data.reshape((-1, 1))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x23184b7f908>]"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x23187a88f98>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#同质\n",
    "import matplotlib.pyplot as plt\n",
    "model=BaggingRegressor(base_estimator=CARTRegressor(),n_estimators=2)\n",
    "model.fit(data,target)\n",
    "plt.scatter(data, target)\n",
    "plt.plot(data, model.predict(data), color='r')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x23198e4e3c8>]"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x23199ece278>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#异质\n",
    "from ml_models.linear_model import LinearRegression\n",
    "model=BaggingRegressor(base_estimator=[LinearRegression(),CARTRegressor()])\n",
    "model.fit(data,target)\n",
    "plt.scatter(data, target)\n",
    "plt.plot(data, model.predict(data), color='r')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 四.问题讨论\n",
    "\n",
    "下面简单推导一下，重采样会有多少比例的样本未能被抽到，已知道总样本量为$m$，那么每轮任一样本未被抽中的概率为$\\frac{m-1}{m}$，所以$m$轮未被抽中的概率为$(\\frac{m-1}{m})^m$，对$m$取极限可得：  \n",
    "\n",
    "$$\n",
    "\\lim_{m\\rightarrow \\infty}(1-\\frac{1}{m})^m=\\frac{1}{e}\\approx0.368\n",
    "$$  \n",
    "\n",
    "简单验证一下：  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "ratios=[]\n",
    "#最小样本量\n",
    "min_sample=100\n",
    "#最大样本量\n",
    "max_sample=1000\n",
    "#每次实验重复次数\n",
    "repeat_num=100\n",
    "for n_sample in range(min_sample,max_sample):\n",
    "    tmp=[]\n",
    "    for _ in range(0,repeat_num):\n",
    "        new_indices=np.random.choice(n_sample,n_sample,replace=True)\n",
    "        tmp.append(1-len(set(new_indices))/n_sample)\n",
    "    ratios.append(np.mean(tmp))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x23198f78780>]"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x23199ebe160>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(ratios)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
